SlideShare a Scribd company logo
1 of 49
Download to read offline
Porting Android to
     New Hardware
                                   th
Android Builders Summit – April 14 2011

           Karim Yaghmour
      karim.yaghmour@opersys.com
             @karimyaghmour
About ...
●   Author of:




●   Introduced Linux Trace Toolkit in 1999
●   Originated Adeos and relayfs (kernel/relay.c)
1. Components to port
2. Cross-development toolchain
3. Porting the bootloader
4. Porting the Linux kernel
5. Developing device drivers
6. Getting the AOSP
7. Implementing Android hardware libs
8. Customizing the user-space
9. Building the AOSP
10. Components to write to flash
11. Useful Embedded Linux tricks
1. Components to port
                   CPU
                               CPU Model   Target Board
                Architecture
GNU toolchain        X             X

bootloader           X                          X

Kernel               X             X            X

Bionic               X

OSS packages         X

Dalvik               X

Hardware libs        X                          X
2. Cross-development toolchain
●   Mainly ARM
●   Prebuilt toolchains:
    ●   Codersourcery
    ●   Linaro
●   Auto-generating a toolchain:
    ●   crosstool-ng
    ●   Buildroot
    ●   PTXdist
    ●   OpenEmbedded
3. Porting the bootloader
●   Check aosp/bootable/bootloader/legacy
    ●   README
    ●   fastboot_protocol.txt
●   CPU support:
    ●   include/[cpu]/*
    ●   arch_[cpu]/*
●   Board support:
    ●   Have your pick ...
4. Porting the Linux kernel
●   Requirements
●   Kernel Architecture
●   Androidisms
●   Which kernel to start from
●   An intro to kernel source layout
●   Using a JTAG debugger
4.1. Requirements
●   Kernel is loaded in RAM and run by bootloader
●   Board schematics
●   Physical memory map
●   Chip timings
●   Receiving proper boot parameters from
    bootloader
4.2. Kernel Architecture
4.3. Androidisms
●   Wakelocks
●   lowmem handler
●   Binder
●   RAM console
●   Logger
●   ...
4.4. Which kernel to start from
●   Google:
    ●   http://android.git.kernel.org/
●   Vanilla:
    ●   http://www.kernel.org
●   Either way ... you're screwed:
    ●   Android kernel is a fork
    ●   No resolution in sight
    ●   Cannot use vanilla kernel as-is ... wakelocks
    ●   Learn how to use “git rebase”
4.5. An intro to kernel source layout
arch            112MB =>   architecture­dependent functionality
block           600KB =>   block layer
Documentation   17MB =>    main kernel documentation
drivers         231MB =>   all drivers
fs              31MB =>    virtual filesystem and all fs types
include         20MB =>    complete kernel headers
init            150KB =>   kernel startup code
ipc             224KB =>   System V IPC
kernel          4.7MB =>   core kernel code
mm              2.2MB =>   memory management
net             20MB =>    networking core and protocols
scripts         1.1MB =>   scripts used to build kernel
tools           2.1MB =>   misc. kernel­related tools
●   arch/
    2.4M   alpha
                        11M    mips
    29M    arm
                        1.7M   mn10300
    1.4M   avr32
                        2.4M   parisc
    5.3M   blackfin
                        13M    powerpc
    4.9M   cris
                        2.4M   s390
    1.4M   frv
                        636K   score
    856K   h8300
                        5.4M   sh
    4.6M   ia64
                        4.7M   sparc
    8.0K   Kconfig
                        1.9M   tile
    1.4M   m32r
                        1.9M   um
    5.7M   m68k
                        8.5M   x86
    1.1M   m68knommu
                        1.4M   xtensa
    1.2M   microblaze
●   arch/arm:
     136K   boot
     208K   common
     676K   configs
     1.1M   include
     252K   lib
     96K    mach­aaec2000
     1.2M   mach­at91
     808K   mach­bcmring
     …
     748K   mm
     308K   nwfpe
     12K    oprofile
     60K    plat­iop
     788K   plat­mxc
     76K    plat­nomadik
     ...
●   drivers/
     accessibility    cpufreq     hwmon          mca            parisc       sbus           uio
     acpi             cpuidle     i2c            md             parport      scsi           usb
     amba             crypto      ide            media          pci          serial         uwb
     ata              dca         idle           memstick       pcmcia       sfi            vhost
     atm              dio         ieee802154     message        platform     sh             video
     auxdisplay       dma         infiniband     mfd            pnp          sn             virtio
     base             edac        input          misc           power        spi            vlynq
     block            eisa        isdn           mmc            pps          ssb            w1
     bluetooth        firewire    Kconfig        mtd            ps3          staging        watchdog
     cdrom            firmware    leds           net            rapidio      tc             xen
     char             gpio        lguest         nubus          regulator    telephony      zorro
     clocksource      gpu         macintosh      of             rtc          thermal
     connector        hid         Makefile       oprofile       s390         tty

●   include/
      acpi           config   drm      keys    math-emu   mtd    pcmcia     rxrpc   sound   video
      asm-generic    crypto   Kbuild   linux   media      net    rdma       scsi    trace   xen
●   Looking for something:
    ●   Try grep
    ●   Have a look at the Linux Cross-Referencing project:
         – URL: http://lxr.linux.no/
         – Code: http://lxr.sourceforge.net/
    ●   Advanced kernel searching/understanding:
         – CScope: http://cscope.sourceforge.net/
         – KScope front-end: http://kscope.sourceforge.net/
    ●   ETAGS (emacs)
4.6. Using a JTAG debugger
●   Allows debugging of:
    ●   Bootloader
    ●   Early kernel code
    ●   Device drivers
●   Need to find one that supports Linux kernel:
    ●   Abatron
    ●   Lauterbach
    ●   GreenHills Software
    ●   ...
5. Developing device drivers
●   Everything in Unix is a file, including devices
●   Get a copy of Linux Device Drivers, 3rd ed.
●   BTW, emulator kernel doesn't allow modules >:(
●   Use standard Linux model API
●   Try avoiding wakelocks in drivers
●   Use modules for development
●   Build drivers in when you ship
●   Remember: kernel is GPL, drivers are ... ???
●   Try using user-space “drivers” for proprietary parts
●   Android actually promotes use of user-space hardware libs
5.1. User space vs. kernel space
●   Separate address space:
    ●   No explicit references to objects from other space
●   Memory protection amongst processes:
    ●   No process can directly access or alter other
        processes' memory areas.
●   Memory protection between processes and kernel:
    ●   No process can access anything inside the kernel
    ●   Processes that attempt die (segfault)
●   Crossing between user space and kernel space is
    through specific events
5.2. Connecting user-space and
            drivers
5.3. Types of drivers
●   Char
●   Block
●   Net
●   Subsystem:
    ●   USB
    ●   MTD
    ●   Framebuffer
    ●   Input
5.4. Kernel primitives
●   Timing
●   Interrupt handling and deferral
●   Memory management
●   /sys, hotplug, etc.
●   Locking mechanisms
●   Hardware access
●   ...
6. Getting the AOSP
●   Code-drop every ~6 months
●   Location:
    ●    http://android.git.kernel.org/
●   Get “repo”:
        $ curl http://android.git.kernel.org/repo > ~/bin/repo
        $ chmod a+x ~/bin/repo
●   Fetch the AOSP:
    ●    Make sure you fetch a tagged release
    ●    Gingerbread:
          $ repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread
          $ repo sync
6.1. AOSP content
bionic        C library replacement
bootable      Reference bootloader
build         Build system
cts           Compatibility Test Suite
dalvik        Dalvik VM
development   Development tools
device        Device-specific files and components
external      Copy of external projects used by AOSP
frameworks    System services, android.*, Android-related cmds, etc.
hardware      Hardware support libs
libcore       Apache Harmony
ndk           The NDK
packages      Stock Android apps, providers, etc.
prebuilt      Prebuilt binaries
sdk           The SDK
system        pieces of the world that are the core of the embedded linux platform at
              the heart of Android.
6.2. Useful pointers
●   See the build system doc at source.android.com
●   Check out device/ in AOSP
●   Check out Cyanogenmod
●   Check out xda-developers
7. Implementing Android hardware libs
Bluetooth               BlueZ through D-BUS IPC (to avoid GPL contamination it seems)
GPS                     Manufacturer-provided libgps.so
Wifi                    wpa_supplicant
Display                 Std framebuffer driver (/dev/fb0)
Keymaps and Keyboards   Std input event (/dev/event0)
Lights                  Manufacturer-provided liblights.so
     Backlight
     Keyboard
     Buttons
     Battery
     Notifications
     Attention
Audio                   Manufacturer-provided libaudio.so (could use ALSA underneath ... at least as illustrated in their porting guide)
Camera                  Manufacturer-provided libcamera.so (could use V4L2 kernel driver underneath ... as illustrated in porting guide)
Power Management        “Wakelocks” kernel patch
Sensors                 Manufacturer-provided libsensors.so
     Accelerometer
     Magnetic Field
     Orientation
     Gyroscope
     Light
     Pressure
     Temperature
     Proximity
Radio Layer Interface   Manufacturer-provided libril-<companyname>-<RIL version>.so
8. Customizing the user-space
●   Boot screen
●   Status bar
●   Network
●   Preloaded apps
●   Browser bookmarks
●   Email provider customization
●   Themes
●   Adding new applications
●   Adding new services / new hardware type
●   Init
8.1. Boot screen
●   Create 320x480 image
●   Install imagemagick
     $ sudo apt-get install imagemagick
●   Convert image to .r format
     $ sudo apt-get install imagemagick
●   Convert image to 565 format
     $ rgb2565 < screen.rgb > screen.565
●   Write image to flash
     $ fastboot flash splash1 screen.565
8.2. Status bar
●   Location:
    ●   frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar
●   Look for:
    ●   mService.setIcon(...)
●   Disable icons with:
    ●   mService.setIconVisibility(“[ICON_NAME]", false);
8.3. Network
●   Locations:
    ●   Global static:
        –   frameworks/base/core/res/res/xml/apns.xml
    ●   Device static:
        –   PRODUCT_COPY_FILES := vendor/acme/etc/apns-conf-us.xml:system/etc/apns-conf.xml

    ●   Dynamic:
        –   system/etc/apns-conf.xml
●   Format:
         <apn carrier="T-Mobile US"
              mcc="310"
              mnc="260"
              apn=" wap.voicestream.com"
              user="none"
              server="*"
              password="none"
              proxy=" 216.155.165.50"
              port="8080"
              mmsc="http://216.155.174.84/servlets/mms"
         />
8.4. Preloaded apps
●   See build/target/products
       PRODUCT_PACKAGES := 
           bouncycastle 
           com.android.location.provider 
           com.android.location.provider.xml 
           core 
           core-junit 
           create_test_dmtrace 
           dalvikvm 
           dexdeps 
       ...
8.5. Browser bookmarks
●   See packages/apps/Browser/res/values/strings.xml
       <!-- Bookmarks -->
       <string-array name="bookmarks">
           <item>Google</item>
           <item>http://www.google.com/</item>
           <item>Yahoo!</item>
           <item>http://www.yahoo.com/</item>
           <item>MSN</item>
           <item>http://www.msn.com/</item>
           <item>MySpace</item>
           <item>http://www.myspace.com/</item>
       ...
8.6. Email provider customization
●   See packages/apps/Email/res/xml/providers.xml
       <!-- Gmail variants -->
           <provider id="gmail" label="Gmail" domain="gmail.com">
              <incoming uri="imap+ssl+://imap.gmail.com" username="$email"/>
              <outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email"/>
           </provider>
           <provider id="googlemail" label="Google Mail" domain="googlemail.com">
              <incoming uri="imap+ssl+://imap.googlemail.com" username="$email"/>
              <outgoing uri="smtp+ssl+://smtp.googlemail.com" username="$email"/>
           </provider>
       ...
           <!-- Common US providers -->

             <provider id="aim" label="AIM" domain="aim.com">
               <incoming uri="imap://imap.aim.com" label="IMAP" username="$email"/>
               <outgoing uri="smtp://smtp.aim.com:587" username="$email"/>
             </provider>
             <provider id="aol" label="AOL" domain="aol.com">
               <incoming uri="imap://imap.aol.com" label="IMAP" username="$email"/>
               <outgoing uri="smtp://smtp.aol.com:587" username="$email"/>
             </provider>
       ...
8.7. Themes
●   See
    framework/base/core/res/res/values/styles.xml
8.8. Adding new applications
●   Add application in packages/apps
●   Can use Eclipse to create initial version
●   Copy Eclipse project to packages/apps
●   Add an appropriate Android.mk file to project
●   Add project to PRODUCT_PACKAGES
8.9. Adding new services / new
                hardware type
●   Add your code to:
    frameworks/base/services/java/com/android/server/
●   Have the SystemServer.java init+reg. your service
●   Define hardware API for apps
●   Expose through:
    ●   frameworks/base/core/java/android/os/[server].aidl
●   Call on native “driver” code through JNI
●   Implement or connect to appropriate driver
●   Create an app that calls on service
●   May need to create new SDK ...
8.10. Init
●   Android init semantics are different from:
    ●   System V init
    ●   Busybox init
●   See “Android Init Language” doc in porting guide
●   See init.rc examples:
    ●   Emulator's init.rc
    ●   device/[manufacturer]/[device]/init.rc
●   Global “properties” that can be set and read
●   Can be used to tweak low-memory conditions
9. Building the AOSP
●   Requires 64-bit Ubuntu 10.04
●   Packages required:
     $ sudo apt-get install ia32-libs bison flex gperf 
     > g++ libia32 libc6-dev-i386 libz-dev libstdc++ 
     > libstdc++6 libstdc++6-32 ia32-libstdc++6 
     > ia32-libstdc++ ia32-libstdc++5 ia32-libs 
     > libncurses-dev lib32ncurses-dev 
     > ia32-libncurses-dev ia32-libncurses lib32ncurses 
     > lib32ncurses5-dev
●   Patch build/core/droiddoc.mk
    ●   https://groups.google.com/group/android-
        building/browse_thread/thread/833a8159a0e5c56c
●   Fix a few symbolic links:
     $ sudo ln -s /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so
     $ sudo ln -s /usr/lib32/libz.so.1 /usr/lib32/libz.so
●   Set up build environment:
     $ . build/envsetup.sh
     $ lunch
●   Launch build and go watch tonight's hockey game:
     $ make -j2
●   ... though you should check your screen at breaks ...
●   Just launch emulator when it's done:
     $ emulator &
●   Some nice tricks:
    ●   See build/envsetup.sh for commands
    ●   Use “lunch” from AOSP root to set env vars
        –   You'll need that if you come back later and want to
            relaunch emulator from AOSP root.
10. Components to write to flash
●   See out/target/product/[product]/*.img
●   Typically:
    ●   Bootloader
    ●   boot (kernel and ramdisk)
    ●   system (/system)
    ●   userdata (/data)
11. Useful Embedded Linux tricks
●   crosstool-ng
●   Busybox
●   uClibc
11.1. crosstool-ng
●   Cross-development toolchain generator
●   Successor to crosstool
●   Available at:
     http://ymorin.is-a-geek.org/projects/crosstool
●   Downloads, patches, builds, installs, etc.
●   Comprises 23 steps
●   Menuconfig-based
●   Supports uClibc, glibc and eglibc
●   Supports ARM, Blackfin, MIPS, PowerPC, SH, …
●   Fairly well maintained
11.2. Busybox
●   Replicate Linux CLI experience
     [, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash, awk, base64, basename, beep, blkid,
     blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd,
     chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd,
     deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname,
     dos2unix, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr,
     fakeidentd, false, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk,
     fsck, fsck.minix, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt, hd, hdparm, head, hexdump,
     hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install,
     ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, last,
     length, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr,
     ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg,
     microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp,
     modinfo, modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nbd-client, nc, netstat, nice, nmeter, nohup,
     nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill, pmap,
     popmaildir, poweroff, powertop, printenv, printf, ps, pscan, pwd, raidautorun, rdate, rdev, readahead, readlink,
     readprofile, realpath, reboot, reformime, remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm,
     rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch,
     setconsole, setfont, setkeycodes, setlogcons, setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey,
     slattach, sleep, smemcap, softlimit, sort, split, start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svlogd,
     swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time,
     timeout, top, touch, tr, traceroute, traceroute6, true, tty, ttysize, tunctl, udhcpc, udhcpd, udpsvd, umount, uname,
     unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, vlock,
     volname, wall, watch, watchdog, wc, wget, which, who, whoami, xargs, xz, xzcat, yes, zcat, zcip
●   Some features of interest:
    ●   color-coded file lists
    ●   tab completion
    ●   "home", "end"
    ●   grep, sed, wc, more, less
    ●   vi
    ●   ifconfig
    ●   httpd
    ●   sendmail
    ●   tftp
    ●   top
    ●   ...
●   Download BusyBox (1.18.3)
●   Move to the directory for the rest of the setup:
    $ cd busybox-1.18.3

●   Configuration of BusyBox's options:
    $ make menuconfig

●   Options that must be set:
    ●   “Build Options” -> “Do you want to build BusyBox with a Cross Compiler?”
    ●   Cross-compiler prefix: arm-unknown-linux-gnueabi-
    ●   “Installation Options” -> “Don't use /usr”
    ●   Installation prefix: ${PRJROOT}/rootfs
●   Build:
    $ make

●   Install:
    $ make install
●   Cheat sheet:
       Commands to get the new Busybox onto the rootfs:
       $ adb shell mount ­o remount,rw rootfs /
       $ adb shell mkdir /bin
       $ adb push busybox /bin/
       $ adb shell /bin/busybox ­­install /bin
       $ adb shell


       To do after going into the shell:
       # /bin/ash
       # export PATH=/bin:$PATH
11.3. uClibc
●   Originates from uClinux effort
●   Support both CPUs that have and those that
    lack an MMU and/or an FPU.
●   Allows both static and dynamic linking
●   Most applications that build with glibc will build
    and work the same with uClibc.
●   Available from: http://uclibc.org/
Thank you ...



karim.yaghmour@opersys.com




     www.opersys.com

More Related Content

What's hot

[Defcon] Hardware backdooring is practical
[Defcon] Hardware backdooring is practical[Defcon] Hardware backdooring is practical
[Defcon] Hardware backdooring is practicalMoabi.com
 
[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory AnalysisMoabi.com
 
XenSummit NA 2012: Xen on ARM Cortex A15
XenSummit NA 2012: Xen on ARM Cortex A15XenSummit NA 2012: Xen on ARM Cortex A15
XenSummit NA 2012: Xen on ARM Cortex A15The Linux Foundation
 
Advanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAdvanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAlex Matrosov
 
One Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesOne Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesLeszek Godlewski
 
MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206Linaro
 
Kernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisKernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisAnne Nicolas
 
[Hackito2012] Hardware backdooring is practical
[Hackito2012] Hardware backdooring is practical[Hackito2012] Hardware backdooring is practical
[Hackito2012] Hardware backdooring is practicalMoabi.com
 
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Linaro
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0GlobalLogic Ukraine
 
Jaime Peñalba - Kernel exploitation. ¿El octavo arte? [rooted2019]
Jaime Peñalba - Kernel exploitation. ¿El octavo arte? [rooted2019]Jaime Peñalba - Kernel exploitation. ¿El octavo arte? [rooted2019]
Jaime Peñalba - Kernel exploitation. ¿El octavo arte? [rooted2019]RootedCON
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchlinuxlab_conf
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleJérôme Petazzoni
 
[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler CollectionMoabi.com
 
Linux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLinux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLubomir Rintel
 
Linux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLinux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLeszek Godlewski
 
OffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenOffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenTamas K Lengyel
 

What's hot (20)

[Defcon] Hardware backdooring is practical
[Defcon] Hardware backdooring is practical[Defcon] Hardware backdooring is practical
[Defcon] Hardware backdooring is practical
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
 
[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis
 
XenSummit NA 2012: Xen on ARM Cortex A15
XenSummit NA 2012: Xen on ARM Cortex A15XenSummit NA 2012: Xen on ARM Cortex A15
XenSummit NA 2012: Xen on ARM Cortex A15
 
Advanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAdvanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/Gapz
 
One Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesOne Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launches
 
MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206
 
Kernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisKernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysis
 
[Hackito2012] Hardware backdooring is practical
[Hackito2012] Hardware backdooring is practical[Hackito2012] Hardware backdooring is practical
[Hackito2012] Hardware backdooring is practical
 
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0
 
Jaime Peñalba - Kernel exploitation. ¿El octavo arte? [rooted2019]
Jaime Peñalba - Kernel exploitation. ¿El octavo arte? [rooted2019]Jaime Peñalba - Kernel exploitation. ¿El octavo arte? [rooted2019]
Jaime Peñalba - Kernel exploitation. ¿El octavo arte? [rooted2019]
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
 
openqrm4.9 Quick Start Guide
openqrm4.9 Quick Start Guideopenqrm4.9 Quick Start Guide
openqrm4.9 Quick Start Guide
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
 
[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection
 
Linux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLinux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshop
 
Linux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLinux as a gaming platform, ideology aside
Linux as a gaming platform, ideology aside
 
OffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenOffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with Xen
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 

Viewers also liked

Inside Android's UI at AnDevCon VI
Inside Android's UI at AnDevCon VIInside Android's UI at AnDevCon VI
Inside Android's UI at AnDevCon VIOpersys inc.
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UIOpersys inc.
 
Android Security, From the Ground Up
Android Security, From the Ground UpAndroid Security, From the Ground Up
Android Security, From the Ground UpOpersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VOpersys inc.
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UIOpersys inc.
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UIOpersys inc.
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Opersys inc.
 
Leveraging Android's Linux Heritage at Android Open 2011
Leveraging Android's Linux Heritage at Android Open 2011Leveraging Android's Linux Heritage at Android Open 2011
Leveraging Android's Linux Heritage at Android Open 2011Opersys inc.
 
Android Variants, Hacks, Tricks and Resources
Android Variants, Hacks, Tricks and ResourcesAndroid Variants, Hacks, Tricks and Resources
Android Variants, Hacks, Tricks and ResourcesOpersys inc.
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 
Android App Development Intro at ESC SV 2012
Android App Development Intro at ESC SV 2012Android App Development Intro at ESC SV 2012
Android App Development Intro at ESC SV 2012Opersys inc.
 
Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VIOpersys inc.
 
Embedded Android Workshop at Embedded World Conference 2013
Embedded Android Workshop at Embedded World Conference 2013Embedded Android Workshop at Embedded World Conference 2013
Embedded Android Workshop at Embedded World Conference 2013Opersys inc.
 
Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Opersys inc.
 
Embedded Android Workshop at AnDevCon VI
Embedded Android Workshop at AnDevCon VIEmbedded Android Workshop at AnDevCon VI
Embedded Android Workshop at AnDevCon VIOpersys inc.
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteOpersys inc.
 
Embedded Android Workshop at Embedded World 2014
Embedded Android Workshop at Embedded World 2014Embedded Android Workshop at Embedded World 2014
Embedded Android Workshop at Embedded World 2014Opersys inc.
 

Viewers also liked (20)

Inside Android's UI at AnDevCon VI
Inside Android's UI at AnDevCon VIInside Android's UI at AnDevCon VI
Inside Android's UI at AnDevCon VI
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
 
Android Security, From the Ground Up
Android Security, From the Ground UpAndroid Security, From the Ground Up
Android Security, From the Ground Up
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon V
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
 
Cyborgstack
CyborgstackCyborgstack
Cyborgstack
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
 
Leveraging Android's Linux Heritage at Android Open 2011
Leveraging Android's Linux Heritage at Android Open 2011Leveraging Android's Linux Heritage at Android Open 2011
Leveraging Android's Linux Heritage at Android Open 2011
 
Android Variants, Hacks, Tricks and Resources
Android Variants, Hacks, Tricks and ResourcesAndroid Variants, Hacks, Tricks and Resources
Android Variants, Hacks, Tricks and Resources
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Android App Development Intro at ESC SV 2012
Android App Development Intro at ESC SV 2012Android App Development Intro at ESC SV 2012
Android App Development Intro at ESC SV 2012
 
Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
 
Embedded Android Workshop at Embedded World Conference 2013
Embedded Android Workshop at Embedded World Conference 2013Embedded Android Workshop at Embedded World Conference 2013
Embedded Android Workshop at Embedded World Conference 2013
 
Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014
 
Embedded Android Workshop at AnDevCon VI
Embedded Android Workshop at AnDevCon VIEmbedded Android Workshop at AnDevCon VI
Embedded Android Workshop at AnDevCon VI
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform Toolsuite
 
Embedded Android Workshop at Embedded World 2014
Embedded Android Workshop at Embedded World 2014Embedded Android Workshop at Embedded World 2014
Embedded Android Workshop at Embedded World 2014
 

Similar to Porting Android

Embedding Linux On The Encore Simputer
Embedding Linux On The Encore SimputerEmbedding Linux On The Encore Simputer
Embedding Linux On The Encore SimputerSatpal Parmar
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205Linaro
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsQUONTRASOLUTIONS
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsLinaro
 
Linux Kernel Platform Development: Challenges and Insights
 Linux Kernel Platform Development: Challenges and Insights Linux Kernel Platform Development: Challenges and Insights
Linux Kernel Platform Development: Challenges and InsightsGlobalLogic Ukraine
 
Linxu conj2016 96boards
Linxu conj2016 96boardsLinxu conj2016 96boards
Linxu conj2016 96boardsLF Events
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Docker, Inc.
 
01 linux-quick-start
01 linux-quick-start01 linux-quick-start
01 linux-quick-startNguyen Vinh
 
Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack eurobsdcon
 
Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Opersys inc.
 
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLinaro
 
Lec 10-linux-review
Lec 10-linux-reviewLec 10-linux-review
Lec 10-linux-reviewabinaya m
 
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo..."Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...Yandex
 
Develop QNAP NAS App by Docker
Develop QNAP NAS App by DockerDevelop QNAP NAS App by Docker
Develop QNAP NAS App by DockerTerry Chen
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded LinuxTushar B Kute
 

Similar to Porting Android (20)

Embedding Linux On The Encore Simputer
Embedding Linux On The Encore SimputerEmbedding Linux On The Encore Simputer
Embedding Linux On The Encore Simputer
 
Introduction and course Details of Embedded Linux Platform Developer Training
Introduction and course Details of Embedded Linux Platform Developer TrainingIntroduction and course Details of Embedded Linux Platform Developer Training
Introduction and course Details of Embedded Linux Platform Developer Training
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
 
Linux Kernel Platform Development: Challenges and Insights
 Linux Kernel Platform Development: Challenges and Insights Linux Kernel Platform Development: Challenges and Insights
Linux Kernel Platform Development: Challenges and Insights
 
Linxu conj2016 96boards
Linxu conj2016 96boardsLinxu conj2016 96boards
Linxu conj2016 96boards
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
 
Building
BuildingBuilding
Building
 
01 linux-quick-start
01 linux-quick-start01 linux-quick-start
01 linux-quick-start
 
Android Development Tools
Android Development ToolsAndroid Development Tools
Android Development Tools
 
Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack
 
Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013
 
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
 
Hardware hacking
Hardware hackingHardware hacking
Hardware hacking
 
Lec 10-linux-review
Lec 10-linux-reviewLec 10-linux-review
Lec 10-linux-review
 
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo..."Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
 
Android Development Tools
Android Development ToolsAndroid Development Tools
Android Development Tools
 
Develop QNAP NAS App by Docker
Develop QNAP NAS App by DockerDevelop QNAP NAS App by Docker
Develop QNAP NAS App by Docker
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded Linux
 

More from Opersys inc.

Android Automotive
Android AutomotiveAndroid Automotive
Android AutomotiveOpersys inc.
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals UpdateOpersys inc.
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security InternalsOpersys inc.
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with PieOpersys inc.
 
Android's HIDL: Treble in the HAL
Android's HIDL: Treble in the HALAndroid's HIDL: Treble in the HAL
Android's HIDL: Treble in the HALOpersys inc.
 
Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Opersys inc.
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with OreoOpersys inc.
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoTOpersys inc.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave InternalsOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave InternalsOpersys inc.
 

More from Opersys inc. (20)

Android Automotive
Android AutomotiveAndroid Automotive
Android Automotive
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals Update
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security Internals
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
 
Android's HIDL: Treble in the HAL
Android's HIDL: Treble in the HALAndroid's HIDL: Treble in the HAL
Android's HIDL: Treble in the HAL
 
Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with Oreo
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 

Recently uploaded

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Recently uploaded (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

Porting Android

  • 1. Porting Android to New Hardware th Android Builders Summit – April 14 2011 Karim Yaghmour karim.yaghmour@opersys.com @karimyaghmour
  • 2. About ... ● Author of: ● Introduced Linux Trace Toolkit in 1999 ● Originated Adeos and relayfs (kernel/relay.c)
  • 3. 1. Components to port 2. Cross-development toolchain 3. Porting the bootloader 4. Porting the Linux kernel 5. Developing device drivers 6. Getting the AOSP 7. Implementing Android hardware libs 8. Customizing the user-space 9. Building the AOSP 10. Components to write to flash 11. Useful Embedded Linux tricks
  • 4. 1. Components to port CPU CPU Model Target Board Architecture GNU toolchain X X bootloader X X Kernel X X X Bionic X OSS packages X Dalvik X Hardware libs X X
  • 5. 2. Cross-development toolchain ● Mainly ARM ● Prebuilt toolchains: ● Codersourcery ● Linaro ● Auto-generating a toolchain: ● crosstool-ng ● Buildroot ● PTXdist ● OpenEmbedded
  • 6. 3. Porting the bootloader ● Check aosp/bootable/bootloader/legacy ● README ● fastboot_protocol.txt ● CPU support: ● include/[cpu]/* ● arch_[cpu]/* ● Board support: ● Have your pick ...
  • 7. 4. Porting the Linux kernel ● Requirements ● Kernel Architecture ● Androidisms ● Which kernel to start from ● An intro to kernel source layout ● Using a JTAG debugger
  • 8. 4.1. Requirements ● Kernel is loaded in RAM and run by bootloader ● Board schematics ● Physical memory map ● Chip timings ● Receiving proper boot parameters from bootloader
  • 10. 4.3. Androidisms ● Wakelocks ● lowmem handler ● Binder ● RAM console ● Logger ● ...
  • 11. 4.4. Which kernel to start from ● Google: ● http://android.git.kernel.org/ ● Vanilla: ● http://www.kernel.org ● Either way ... you're screwed: ● Android kernel is a fork ● No resolution in sight ● Cannot use vanilla kernel as-is ... wakelocks ● Learn how to use “git rebase”
  • 12. 4.5. An intro to kernel source layout arch 112MB => architecture­dependent functionality block 600KB => block layer Documentation 17MB => main kernel documentation drivers 231MB => all drivers fs 31MB => virtual filesystem and all fs types include 20MB => complete kernel headers init 150KB => kernel startup code ipc 224KB => System V IPC kernel 4.7MB => core kernel code mm 2.2MB => memory management net 20MB => networking core and protocols scripts 1.1MB => scripts used to build kernel tools 2.1MB => misc. kernel­related tools
  • 13. arch/ 2.4M alpha 11M mips 29M arm 1.7M mn10300 1.4M avr32 2.4M parisc 5.3M blackfin 13M powerpc 4.9M cris 2.4M s390 1.4M frv 636K score 856K h8300 5.4M sh 4.6M ia64 4.7M sparc 8.0K Kconfig 1.9M tile 1.4M m32r 1.9M um 5.7M m68k 8.5M x86 1.1M m68knommu 1.4M xtensa 1.2M microblaze
  • 14. arch/arm: 136K boot 208K common 676K configs 1.1M include 252K lib 96K mach­aaec2000 1.2M mach­at91 808K mach­bcmring … 748K mm 308K nwfpe 12K oprofile 60K plat­iop 788K plat­mxc 76K plat­nomadik ...
  • 15. drivers/ accessibility cpufreq hwmon mca parisc sbus uio acpi cpuidle i2c md parport scsi usb amba crypto ide media pci serial uwb ata dca idle memstick pcmcia sfi vhost atm dio ieee802154 message platform sh video auxdisplay dma infiniband mfd pnp sn virtio base edac input misc power spi vlynq block eisa isdn mmc pps ssb w1 bluetooth firewire Kconfig mtd ps3 staging watchdog cdrom firmware leds net rapidio tc xen char gpio lguest nubus regulator telephony zorro clocksource gpu macintosh of rtc thermal connector hid Makefile oprofile s390 tty ● include/ acpi config drm keys math-emu mtd pcmcia rxrpc sound video asm-generic crypto Kbuild linux media net rdma scsi trace xen
  • 16. Looking for something: ● Try grep ● Have a look at the Linux Cross-Referencing project: – URL: http://lxr.linux.no/ – Code: http://lxr.sourceforge.net/ ● Advanced kernel searching/understanding: – CScope: http://cscope.sourceforge.net/ – KScope front-end: http://kscope.sourceforge.net/ ● ETAGS (emacs)
  • 17. 4.6. Using a JTAG debugger ● Allows debugging of: ● Bootloader ● Early kernel code ● Device drivers ● Need to find one that supports Linux kernel: ● Abatron ● Lauterbach ● GreenHills Software ● ...
  • 18. 5. Developing device drivers ● Everything in Unix is a file, including devices ● Get a copy of Linux Device Drivers, 3rd ed. ● BTW, emulator kernel doesn't allow modules >:( ● Use standard Linux model API ● Try avoiding wakelocks in drivers ● Use modules for development ● Build drivers in when you ship ● Remember: kernel is GPL, drivers are ... ??? ● Try using user-space “drivers” for proprietary parts ● Android actually promotes use of user-space hardware libs
  • 19. 5.1. User space vs. kernel space ● Separate address space: ● No explicit references to objects from other space ● Memory protection amongst processes: ● No process can directly access or alter other processes' memory areas. ● Memory protection between processes and kernel: ● No process can access anything inside the kernel ● Processes that attempt die (segfault) ● Crossing between user space and kernel space is through specific events
  • 21. 5.3. Types of drivers ● Char ● Block ● Net ● Subsystem: ● USB ● MTD ● Framebuffer ● Input
  • 22. 5.4. Kernel primitives ● Timing ● Interrupt handling and deferral ● Memory management ● /sys, hotplug, etc. ● Locking mechanisms ● Hardware access ● ...
  • 23. 6. Getting the AOSP ● Code-drop every ~6 months ● Location: ● http://android.git.kernel.org/ ● Get “repo”: $ curl http://android.git.kernel.org/repo > ~/bin/repo $ chmod a+x ~/bin/repo ● Fetch the AOSP: ● Make sure you fetch a tagged release ● Gingerbread: $ repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread $ repo sync
  • 24. 6.1. AOSP content bionic C library replacement bootable Reference bootloader build Build system cts Compatibility Test Suite dalvik Dalvik VM development Development tools device Device-specific files and components external Copy of external projects used by AOSP frameworks System services, android.*, Android-related cmds, etc. hardware Hardware support libs libcore Apache Harmony ndk The NDK packages Stock Android apps, providers, etc. prebuilt Prebuilt binaries sdk The SDK system pieces of the world that are the core of the embedded linux platform at the heart of Android.
  • 25. 6.2. Useful pointers ● See the build system doc at source.android.com ● Check out device/ in AOSP ● Check out Cyanogenmod ● Check out xda-developers
  • 26. 7. Implementing Android hardware libs Bluetooth BlueZ through D-BUS IPC (to avoid GPL contamination it seems) GPS Manufacturer-provided libgps.so Wifi wpa_supplicant Display Std framebuffer driver (/dev/fb0) Keymaps and Keyboards Std input event (/dev/event0) Lights Manufacturer-provided liblights.so Backlight Keyboard Buttons Battery Notifications Attention Audio Manufacturer-provided libaudio.so (could use ALSA underneath ... at least as illustrated in their porting guide) Camera Manufacturer-provided libcamera.so (could use V4L2 kernel driver underneath ... as illustrated in porting guide) Power Management “Wakelocks” kernel patch Sensors Manufacturer-provided libsensors.so Accelerometer Magnetic Field Orientation Gyroscope Light Pressure Temperature Proximity Radio Layer Interface Manufacturer-provided libril-<companyname>-<RIL version>.so
  • 27. 8. Customizing the user-space ● Boot screen ● Status bar ● Network ● Preloaded apps ● Browser bookmarks ● Email provider customization ● Themes ● Adding new applications ● Adding new services / new hardware type ● Init
  • 28. 8.1. Boot screen ● Create 320x480 image ● Install imagemagick $ sudo apt-get install imagemagick ● Convert image to .r format $ sudo apt-get install imagemagick ● Convert image to 565 format $ rgb2565 < screen.rgb > screen.565 ● Write image to flash $ fastboot flash splash1 screen.565
  • 29. 8.2. Status bar ● Location: ● frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar ● Look for: ● mService.setIcon(...) ● Disable icons with: ● mService.setIconVisibility(“[ICON_NAME]", false);
  • 30. 8.3. Network ● Locations: ● Global static: – frameworks/base/core/res/res/xml/apns.xml ● Device static: – PRODUCT_COPY_FILES := vendor/acme/etc/apns-conf-us.xml:system/etc/apns-conf.xml ● Dynamic: – system/etc/apns-conf.xml ● Format: <apn carrier="T-Mobile US" mcc="310" mnc="260" apn=" wap.voicestream.com" user="none" server="*" password="none" proxy=" 216.155.165.50" port="8080" mmsc="http://216.155.174.84/servlets/mms" />
  • 31. 8.4. Preloaded apps ● See build/target/products PRODUCT_PACKAGES := bouncycastle com.android.location.provider com.android.location.provider.xml core core-junit create_test_dmtrace dalvikvm dexdeps ...
  • 32. 8.5. Browser bookmarks ● See packages/apps/Browser/res/values/strings.xml <!-- Bookmarks --> <string-array name="bookmarks"> <item>Google</item> <item>http://www.google.com/</item> <item>Yahoo!</item> <item>http://www.yahoo.com/</item> <item>MSN</item> <item>http://www.msn.com/</item> <item>MySpace</item> <item>http://www.myspace.com/</item> ...
  • 33. 8.6. Email provider customization ● See packages/apps/Email/res/xml/providers.xml <!-- Gmail variants --> <provider id="gmail" label="Gmail" domain="gmail.com"> <incoming uri="imap+ssl+://imap.gmail.com" username="$email"/> <outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email"/> </provider> <provider id="googlemail" label="Google Mail" domain="googlemail.com"> <incoming uri="imap+ssl+://imap.googlemail.com" username="$email"/> <outgoing uri="smtp+ssl+://smtp.googlemail.com" username="$email"/> </provider> ... <!-- Common US providers --> <provider id="aim" label="AIM" domain="aim.com"> <incoming uri="imap://imap.aim.com" label="IMAP" username="$email"/> <outgoing uri="smtp://smtp.aim.com:587" username="$email"/> </provider> <provider id="aol" label="AOL" domain="aol.com"> <incoming uri="imap://imap.aol.com" label="IMAP" username="$email"/> <outgoing uri="smtp://smtp.aol.com:587" username="$email"/> </provider> ...
  • 34. 8.7. Themes ● See framework/base/core/res/res/values/styles.xml
  • 35. 8.8. Adding new applications ● Add application in packages/apps ● Can use Eclipse to create initial version ● Copy Eclipse project to packages/apps ● Add an appropriate Android.mk file to project ● Add project to PRODUCT_PACKAGES
  • 36. 8.9. Adding new services / new hardware type ● Add your code to: frameworks/base/services/java/com/android/server/ ● Have the SystemServer.java init+reg. your service ● Define hardware API for apps ● Expose through: ● frameworks/base/core/java/android/os/[server].aidl ● Call on native “driver” code through JNI ● Implement or connect to appropriate driver ● Create an app that calls on service ● May need to create new SDK ...
  • 37. 8.10. Init ● Android init semantics are different from: ● System V init ● Busybox init ● See “Android Init Language” doc in porting guide ● See init.rc examples: ● Emulator's init.rc ● device/[manufacturer]/[device]/init.rc ● Global “properties” that can be set and read ● Can be used to tweak low-memory conditions
  • 38. 9. Building the AOSP ● Requires 64-bit Ubuntu 10.04 ● Packages required: $ sudo apt-get install ia32-libs bison flex gperf > g++ libia32 libc6-dev-i386 libz-dev libstdc++ > libstdc++6 libstdc++6-32 ia32-libstdc++6 > ia32-libstdc++ ia32-libstdc++5 ia32-libs > libncurses-dev lib32ncurses-dev > ia32-libncurses-dev ia32-libncurses lib32ncurses > lib32ncurses5-dev ● Patch build/core/droiddoc.mk ● https://groups.google.com/group/android- building/browse_thread/thread/833a8159a0e5c56c
  • 39. Fix a few symbolic links: $ sudo ln -s /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so $ sudo ln -s /usr/lib32/libz.so.1 /usr/lib32/libz.so ● Set up build environment: $ . build/envsetup.sh $ lunch ● Launch build and go watch tonight's hockey game: $ make -j2 ● ... though you should check your screen at breaks ... ● Just launch emulator when it's done: $ emulator &
  • 40. Some nice tricks: ● See build/envsetup.sh for commands ● Use “lunch” from AOSP root to set env vars – You'll need that if you come back later and want to relaunch emulator from AOSP root.
  • 41. 10. Components to write to flash ● See out/target/product/[product]/*.img ● Typically: ● Bootloader ● boot (kernel and ramdisk) ● system (/system) ● userdata (/data)
  • 42. 11. Useful Embedded Linux tricks ● crosstool-ng ● Busybox ● uClibc
  • 43. 11.1. crosstool-ng ● Cross-development toolchain generator ● Successor to crosstool ● Available at: http://ymorin.is-a-geek.org/projects/crosstool ● Downloads, patches, builds, installs, etc. ● Comprises 23 steps ● Menuconfig-based ● Supports uClibc, glibc and eglibc ● Supports ARM, Blackfin, MIPS, PowerPC, SH, … ● Fairly well maintained
  • 44. 11.2. Busybox ● Replicate Linux CLI experience [, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash, awk, base64, basename, beep, blkid, blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk, fsck, fsck.minix, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, last, length, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nbd-client, nc, netstat, nice, nmeter, nohup, nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv, printf, ps, pscan, pwd, raidautorun, rdate, rdev, readahead, readlink, readprofile, realpath, reboot, reformime, remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont, setkeycodes, setlogcons, setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey, slattach, sleep, smemcap, softlimit, sort, split, start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true, tty, ttysize, tunctl, udhcpc, udhcpd, udpsvd, umount, uname, unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, volname, wall, watch, watchdog, wc, wget, which, who, whoami, xargs, xz, xzcat, yes, zcat, zcip
  • 45. Some features of interest: ● color-coded file lists ● tab completion ● "home", "end" ● grep, sed, wc, more, less ● vi ● ifconfig ● httpd ● sendmail ● tftp ● top ● ...
  • 46. Download BusyBox (1.18.3) ● Move to the directory for the rest of the setup: $ cd busybox-1.18.3 ● Configuration of BusyBox's options: $ make menuconfig ● Options that must be set: ● “Build Options” -> “Do you want to build BusyBox with a Cross Compiler?” ● Cross-compiler prefix: arm-unknown-linux-gnueabi- ● “Installation Options” -> “Don't use /usr” ● Installation prefix: ${PRJROOT}/rootfs ● Build: $ make ● Install: $ make install
  • 47. Cheat sheet: Commands to get the new Busybox onto the rootfs: $ adb shell mount ­o remount,rw rootfs / $ adb shell mkdir /bin $ adb push busybox /bin/ $ adb shell /bin/busybox ­­install /bin $ adb shell To do after going into the shell: # /bin/ash # export PATH=/bin:$PATH
  • 48. 11.3. uClibc ● Originates from uClinux effort ● Support both CPUs that have and those that lack an MMU and/or an FPU. ● Allows both static and dynamic linking ● Most applications that build with glibc will build and work the same with uClibc. ● Available from: http://uclibc.org/